"""
数据库配置文件
包含数据库连接配置和相关的配置管理函数
"""

import os
from typing import Dict, Any

# 默认数据库配置
DEFAULT_DB_CONFIG = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'database': 'mcp',
    'charset': 'utf8mb4',
    'cursorclass': 'DictCursor'  # 注意：这里需要导入 pymysql.cursors.DictCursor
}

def get_db_config() -> Dict[str, Any]:
    """
    获取数据库配置，支持从环境变量覆盖默认配置
    :return: 数据库配置字典
    """
    config = DEFAULT_DB_CONFIG.copy()
    
    # 从环境变量读取配置
    if os.getenv('DB_HOST'):
        config['host'] = os.getenv('DB_HOST')
    if os.getenv('DB_PORT'):
        config['port'] = int(os.getenv('DB_PORT'))
    if os.getenv('DB_USER'):
        config['user'] = os.getenv('DB_USER')
    if os.getenv('DB_PASSWORD'):
        config['password'] = os.getenv('DB_PASSWORD')
    if os.getenv('DB_NAME'):
        config['database'] = os.getenv('DB_NAME')
    if os.getenv('DB_CHARSET'):
        config['charset'] = os.getenv('DB_CHARSET')
    
    # 处理 cursorclass
    if config['cursorclass'] == 'DictCursor':
        import pymysql.cursors
        config['cursorclass'] = pymysql.cursors.DictCursor
    
    return config

def get_test_db_config() -> Dict[str, Any]:
    """
    获取测试环境的数据库配置
    :return: 测试数据库配置字典
    """
    config = get_db_config()
    # 可以在这里添加测试环境的特殊配置
    # 例如：使用不同的数据库名
    if os.getenv('TEST_DB_NAME'):
        config['database'] = os.getenv('TEST_DB_NAME')
    return config

def get_production_db_config() -> Dict[str, Any]:
    """
    获取生产环境的数据库配置
    :return: 生产数据库配置字典
    """
    config = get_db_config()
    # 可以在这里添加生产环境的特殊配置
    # 例如：连接池配置、超时设置等
    return config 